package mviewer.types;

import java.util.Collection;
import java.util.Iterator;
import java.util.Set;

public interface IModel3d {

	static public final String COPY_SUFFIX = "-copy";

	String getName();

	Transformation getTransformation();

	Material getMaterial();

	void draw(IDrawerContext drawerContext);

	void listContainedMaterials(Set<Material> materials);

	void listContainedModels(Collection<IModel3d> models);

	IModel3d clone();

	Iterator<IWritableVector> transformableVertexIterator();

	Iterator<IWritableVector> transformableNormalIterator();

	float calculateDiagonalLength();

	IVector calculateCenter();

	float retrieveLowestX();

	float retrieveHighestX();

	float retrieveLowestY();

	float retrieveHighestY();

	float retrieveLowestZ();

	float retrieveHighestZ();
}
